  !===============================
  subroutine rr_io2(flag,rr,isurv,ladd)
    character(len=4)            :: flag
    integer                     :: index_ws
    integer, dimension(4)       :: n_cube, j_wind, n_wind, f_wind
    integer                     :: n_dim_cube, err
    integer                     :: isurv
    real                        :: rr(igrid%ax%n,igrid%ay%n,igrid%az%n,3)
    real                        :: tt(igrid%ax%n,igrid%ay%n,igrid%az%n,3)
    logical                     :: ladd
    character(len=256)          :: rr_

    if(isurv==1 )rr_=rr1_ ;if(isurv==2 )rr_=rr2_ ;if(isurv==3 )rr_=rr3_ ;if(isurv==4 )rr_=rr4_ ;if(isurv==5 )rr_=rr5_ ;if(isurv==6 )rr_=rr6_; if(isurv==7 )rr_=rr7_ ;
    if(isurv==8 )rr_=rr8_ ;if(isurv==9 )rr_=rr9_ ;if(isurv==10)rr_=rr10_;if(isurv==11)rr_=rr11_;if(isurv==12)rr_=rr12_;if(isurv==13)rr_=rr13_;if(isurv==14)rr_=rr14_;if(isurv==15)rr_=rr15_;
    
    n_dim_cube = 4
    n_cube = (/igrid%ax%n              , igrid%ay%n            , igrid%az%n             ,3 /)
    n_wind = (/igrid%ax%n              , igrid%ay%n            , igrid%az%n             ,3 /)
    j_wind = (/1                       , 1                     , 1                      ,1 /)
    f_wind = (/0                       , 0                     , 0                      ,0 /)
    !write(0,*)n_cube; write(0,*)n_wind; write(0,*)j_wind; write(0,*)f_wind;
        if (flag == "rite") then
                if(lout_scycles)then
                        call srite(rr_, rr, 4*size(rr))
                else
                        if(ladd.and.exist_file(rr_)) then
                                tt=0.; err = sreed_window(rr_,n_dim_cube,n_cube,n_wind,f_wind,j_wind,4,   tt); if (err /= 0) call seperr("rr_io2: error reading rr")
                                       err = srite_window(rr_,n_dim_cube,n_cube,n_wind,f_wind,j_wind,4,rr+tt); if (err /= 0) call seperr("rr_io2: error writing rr")
                        elseif(exist_file(rr_)) then
                                       err = srite_window(rr_,n_dim_cube,n_cube,n_wind,f_wind,j_wind,4,rr   ); if (err /= 0) call seperr("rr_io2: error writing rr")
                        else
                                       write(0,*)'rr_io2: If you wish to output repeatability....please specify the file name(s)'
                        endif
                endif          
        elseif(flag == "reed") then
                if(exist_file(rr_)) then
                               err = sreed_window(rr_,n_dim_cube,n_cube,n_wind,f_wind,j_wind,4,rr   ); if (err /= 0) call seperr("rr_io2: error reading rr")
                else
                               write(0,*)'rr_io2: If you wish to output repeatability....please specify the file name(s)'
                endif
        else
                               call seperr("you have to specify the flag for rr_io()")
        endif
  end subroutine
